package Modele;
import java.io.Serializable;
import java.util.Vector;

//import java.util.ArrayList;
//import java.util.Iterator;

public class Partie implements Serializable{

	  private String nomPartie;
	  public Joueur[] joueurs;
	  /*tableau de joueurs cree dynamiquement selon le nombre de joueurs  qui vont jouer*/
	  private int nbreJoueurs;
	  private int nbreTours;
	  private int tourCourant;
	  
	  private int numJoueurCourant;
	  private Joueur joueurActuel;

	  private int numJoueurReprise;
	  
	  public Partie(){
		  nomPartie = "Pas de nom";
		  nbreTours = 0;
		  saisieJoueurs(0);
		  tourCourant=0;
		  numJoueurCourant =0;
		  joueurActuel =null;
	  }
	  
	  public Partie(String nomP, int nbreJ, int nbreT){
			nomPartie=nomP;
			nbreJoueurs = nbreJ;
			joueurs = new Joueur[nbreJ];
			numJoueurCourant = 0;
			joueurActuel=joueurs[numJoueurCourant];
			nbreTours = nbreT;
			tourCourant=1;
	  }
	  
	  /***************getters************************/
	  public int getNbreJoueurs(){
		  return this.nbreJoueurs;
	  }
	 
	  public String getNomPartie(){
		  return this.nomPartie;
	  }
	  
	  public Joueur getjoueur(int i){
		  return this.joueurs[i];
	  }
	  
	  public int getTours(){
		  return this.nbreTours;
	  }
	  
	  public int getTourCourant(){
		  return this.tourCourant;
	  }
	  
	  public int getNumJoueur(Joueur jou){
		  int num = 0;
		  for(int i=0; i<this.nbreJoueurs-1; i++){
			  if(joueurs[i].equals(jou))
				  num = i;
		  }
		  return num;
	  }
	  
	  public int getNumJoueurCourant(){
		  return this.numJoueurCourant;
	  }
	  
	  public Joueur getJoueurActuel(){
		  return this.joueurs[numJoueurCourant];
	  }
	  
	  public Joueur aRedeployer(){
		  Joueur jou = null;
		  for(int i=0; i<this.nbreJoueurs; i++){
			  if((joueurs[i].getActive()!=null)&&(joueurs[i].getActive().getNbrePions()!=0))
				  jou = joueurs[i];
		  }
		  return jou;
	  }
	  public int getNumReprise(){
		  return numJoueurReprise;
	  }
	  
	  /****************setters*******************/
	  public void setNbreJoueurs(int nbre){
		  this.nbreJoueurs=nbre;
	  }
	  
	  public void setNomPartie(String nom) {
		  /*Saisir le nom de la partie*/
		  this.nomPartie=nom;
	  }

	  public void setnomjoueur(int i,String s){
		  joueurs[i]=new Joueur(s);
	  }
	  
	  public void setTours(int nbre) {
	  /* Permet de saisir le nombre tours*/
		  this.nbreTours=nbre;
	  }

	  public void setNumJoueurCourant(int nbre){
		  this.numJoueurCourant=nbre;
	  }
	  
	  public void setJoueurActuel(Joueur player){
		  this.joueurActuel= player;
	  }
	  
	  public void setNumReprise(int a){
		  numJoueurReprise = a;
	  }
	  
	  
	  public void saisieJoueurs(int nbre ) {
		  /*Demande �l'utilisateur de saisir le nombre de joueurs, initialise un tableau dynamique de joueurs*/
		  this.nbreJoueurs= nbre;
		  this.joueurs= new Joueur[nbre];
		  
		  for(int i=0;i<nbre;i++){
			  joueurs[i]=new Joueur("Joueur "+ String.valueOf( i+1 )); //pour mettre dans Joueur:Joueur 1,Joueur 2...
		  }
	  }
	  

	  public Joueur gagnant() {
		  /*Actions �faire en fin de partie: comparer nombre de points de victoire+ afficher classement*/
		  Joueur gagnant = joueurs[0];
		  for (int i = 0; i<nbreJoueurs; i++){
			  	if (joueurs[i].getPoints()>gagnant.getPoints()){
			  		gagnant = joueurs[i];
			  	}
		  }
		  return gagnant;
	  }
	  
	  public void tourSuivant() {
		  this.tourCourant= this.tourCourant+1;
	  }
	  
  

	  public void joueurSuivant() {
		
			if(numJoueurCourant==nbreJoueurs-1)	{
				numJoueurCourant=0;
				tourSuivant();
			}
			else
				numJoueurCourant++;
		
			joueurActuel = joueurs[numJoueurCourant];
	  }
	  	  
}
